在前幾天介紹過Notion API後,接著本篇會繼續介紹google calendar API。和Notion API相同,Google Calendar API是符合REST樣式的API。這邊先補充一下REST的相關資料:
維基百科:表現層狀態轉換(英語:Representational State Transfer,縮寫:REST)是Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程式在網路(例如網際網路)中互相傳遞資訊。表現層狀態轉換是根基於超文字傳輸協定(HTTP)之上而確定的一組約束和屬性,是一種設計提供全球資訊網絡服務的軟體構建風格。符合或相容於這種架構風格(簡稱為 REST 或 RESTful)的網路服務,允許使用者端發出以統一資源標識符存取和操作網路資源的請求,而與預先定義好的無狀態操作集一致化。因此表現層狀態轉換提供了在網際網路的計算系統之間,彼此資源可互動使用的協作性質(interoperability)。相對於其它種類的網路服務,例如SOAP服務,則是以本身所定義的操作集,來存取網路上的資源。
簡單來說,以REST設計的網路服務在近年較為流行,主要原因為以REST設計的網路服務有使用方便、程式碼更為簡潔的特性,近年來被廣泛地使用。此外REST是一種設計風格,並沒有統一標準,只需符合Uniform Interface、Stateless、Cacheable、Client-Server、Layered System、Code on Demand這些條件,即可稱為符合REST樣式的API。因此Notion API和Google Calendar API再互相銜接與應用上都有較好的相性。
再來,我們切入本篇的主題,在參閱Google 的相關技術文件後,整理出以下Google Calendar API 的常用的項目清單:
因應主要會應用到的API功能,本篇會優先介紹calendars以及CalendarList這兩個API。
Calendars代表所有現有的日曆項目,並包含了這些項目的後設資料(Matadata)。這個API可用來建立和刪除日曆,也可以用來擷取或設定與其他使用者共用的全域屬性(global properties),如位置(location)、預設時區(timeZone)等等項目。以下為Calendars的格式:
{
"kind": "calendar#calendar",
"etag":etag,
"id":string,
"summary":string,
"description":string,
"location":string,
"timeZone":string,
"conferenceProperties": {
"allowedConferenceSolutionTypes": [
string
]
}
}
CalendarList 是使用者加入清單的所有日曆項目的集合。使用者可以透過這個API在使用者清單中編輯日曆,並可以做一些個人化的設定,如標注顏色、預設提醒等等。以下為Calendarslist的格式:
{
"kind": "calendar#calendarListEntry",
"etag":etag,
"id":string,
"summary":string,
"description":string,
"location":string,
"timeZone":string,
"summaryOverride":string,
"colorId":string,
"backgroundColor":string,
"foregroundColor":string,
"hidden":boolean,
"selected":boolean,
"accessRole":string,
"defaultReminders": [
{
"method":string,
"minutes":integer
}
],
"notificationSettings": {
"notifications": [
{
"type":string,
"method":string
}
]
},
"primary":boolean,
"deleted":boolean,
"conferenceProperties": {
"allowedConferenceSolutionTypes": [
string
]
}
}
以上兩個API雖然名稱相似,但功能上是有差異的,比如他們都有新增(insert),刪除(delete)的功能,但作動的效果是不一樣的!明天會繼續研究並消化,再努力呈現內容給大家!